package cc.ok200.api.common;

import com.fasterxml.jackson.annotation.JsonInclude;
import java.util.HashMap;
import java.util.Map;

/**
 * API统一返回结果类
 * 简单的数据容器，用于返回API响应
 */
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ApiResponse {
    private String code;
    private String msg;
    private Map<String, Object> data;

    /**
     * 创建一个空的 ApiResponse 实例，默认成功状态
     */
    public ApiResponse() {
        this.data = new HashMap<>();
    }
    
    /**
     * 创建一个带状态码和消息的 ApiResponse 实例
     * 
     * @param code 状态码
     * @param msg 消息
     */
    public ApiResponse(String code, String msg) {
        this.code = code;
        this.msg = msg;
        this.data = new HashMap<>();
    }

    /**
     * 添加数据字段
     * @param key 字段名
     * @param value 字段值
     * @return 当前对象
     */
    public ApiResponse put(String key, Object value) {
        if (value != null) {
            this.data.put(key, value);
        }
        return this;
    }

    /**
     * 设置状态码
     * @param code 状态码
     * @return 当前对象
     */
    public ApiResponse setCode(String code) {
        this.code = code;
        return this;
    }
    
    /**
     * 设置消息
     * @param msg 消息
     * @return 当前对象
     */
    public ApiResponse setMsg(String msg) {
        this.msg = msg;
        return this;
    }

    /**
     * 获取状态码
     * @return 状态码
     */
    public String getCode() {
        return code;
    }

    /**
     * 获取消息
     * @return 消息
     */
    public String getMsg() {
        return msg;
    }
    
    /**
     * 获取数据
     * @return 数据Map
     */
    public Map<String, Object> getData() {
        return data.isEmpty() ? null : data;
    }
} 